home *** CD-ROM | disk | FTP | other *** search
- ' SHELL.DLL
- Declare Function RegOpenKey& Lib "SHELL.DLL" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)
- Declare Function RegCreateKey& Lib "SHELL.DLL" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)
- Declare Function RegQueryValue& Lib "SHELL.DLL" (ByVal hKey&, ByVal lpszSubKey$, ByVal lpszValue$, nSize&)
- Declare Function RegEnumKey& Lib "SHELL.DLL" (ByVal hKey&, ByVal iSubKey&, ByVal lpReturnedString$, ByVal nSize&)
- Declare Function RegSetValue& Lib "SHELL.DLL" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&)
- Declare Function RegDeleteKey& Lib "SHELL.DLL" (ByVal hKey&, ByVal lpszSubKey$)
- Declare Function RegCloseKey& Lib "SHELL.DLL" (ByVal hKey&)
-
- Global Const HKEY_CLASSES_ROOT = 1
- Global Const MAX_PATH = 128
- Global Const REG_SZ = 1
-
- ' return codes from Registration functions
- Global Const ERROR_SUCCESS = 0&
- Global Const ERROR_BADDB = 1&
- Global Const ERROR_BADKEY = 2&
- Global Const ERROR_CANTOPEN = 3&
- Global Const ERROR_CANTREAD = 4&
- Global Const ERROR_CANTWRITE = 5&
- Global Const ERROR_OUTOFMEMORY = 6&
- Global Const ERROR_INVALID_PARAMETER = 7&
- Global Const ERROR_ACCESS_DENIED = 8&
-
-
- Sub AddKey ()
- sKeyName = "MyApplication"
- sKeyValue = "My Application 1.0"
- ret& = RegCreateKey(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
- ret& = RegSetValue(lphKey&, "", REG_SZ, sKeyValue, 0&)
- End Sub
-
- Sub EnumRoot ()
- Dim sSubKey As String * MAX_PATH
- Dim sValue As String * MAX_PATH
- Dim sKeyVal As String
- BuffLen& = CLng(MAX_PATH)
-
- For i& = 0 To 1000
- sSubKey = String(MAX_PATH, " ")
- sValue = String(MAX_PATH, " ")
- BuffLen& = CLng(MAX_PATH)
- ret& = RegEnumKey(HKEY_CLASSES_ROOT, i&, sSubKey, BuffLen&)
- If ret& <> 0 Then Exit For
- sKeyVal = Left(sSubKey, Len(Trim$(sSubKey)) - 1)
- ret& = RegQueryValue(HKEY_CLASSES_ROOT, sKeyVal, sValue, BuffLen&)
- Debug.Print Left$(sValue, BuffLen&)
- Next i&
-
- End Sub
-
- Sub GetCurVer ()
- Dim sSubKey As String * MAX_PATH
- Dim sValue As String * MAX_PATH
- Dim sKeyVal As String
- BuffLen& = CLng(MAX_PATH)
-
- For i& = 0 To 1000
- sSubKey = String(MAX_PATH, " ")
- sValue = String(MAX_PATH, " ")
- BuffLen& = CLng(MAX_PATH)
- ret& = RegEnumKey(HKEY_CLASSES_ROOT, i&, sSubKey, BuffLen&)
- If ret& <> 0 Then Exit For
- sKeyVal = Left(sSubKey, Len(Trim$(sSubKey)) - 1)
- ret& = RegOpenKey(HKEY_CLASSES_ROOT, sKeyVal, hkSFE&)
- ret& = RegQueryValue(hkSFE&, "CurVer", sValue, BuffLen&)
- If ret& = 0 Then
- Debug.Print "CurrentVersion = " & Left$(sValue, BuffLen&)
- End If
- ret& = RegCloseKey(hkSFE&)
- Next i&
- End Sub
-
- Sub GetServer ()
- Dim sSubKey As String * MAX_PATH
- Dim sValue As String * MAX_PATH
- Dim sKeyVal As String
- BuffLen& = CLng(MAX_PATH)
-
- For i& = 0 To 10
- sSubKey = String(MAX_PATH, " ")
- sValue = String(MAX_PATH, " ")
- BuffLen& = CLng(MAX_PATH)
- ret& = RegEnumKey(HKEY_CLASSES_ROOT, i&, sSubKey, BuffLen&)
- If ret& <> 0 Then Exit For
- sKeyVal = Left(sSubKey, Len(Trim$(sSubKey)) - 1)
- ret& = RegOpenKey(HKEY_CLASSES_ROOT, sKeyVal & "\protocol\StdFileEditing", hkSFE&)
- ret& = RegQueryValue(hkSFE&, "server", sValue, BuffLen&)
- If ret& = 0 Then
- Debug.Print "KeyVal=" & sKeyVal
- Debug.Print " Key=" & hkSFE&, " Server= " & Left$(sValue, BuffLen&)
- End If
- ret& = RegCloseKey(hkSFE&)
- Next i&
-
- End Sub
-
-